/*
 * BAStringUtil.java
 * classes : com.qim.basdk.utilites.BAStringUtil
 * @author xuwei
 * V 1.0.0
 * Created at 2015年8月20日 下午12:02:29
 */
package com.langsheng.lsintell.utils;

/**
 * 一些处理字符串的工具方法
 *
 * @author xuwei
 *         <p>
 *         created at 2015年8月20日 下午12:02:29
 */
public class LSStringUtil {
    public final static String TAG = "LSStringUtil";

    /**
     * 以第一个指定字符为分隔符分割字符串成两个字符串
     *
     * @param src
     * @param split
     * @return
     */
    public static String[] splitByFirstChar(String src, String split) {
        String[] ret = new String[2];
        int index = src.indexOf(split);
        if (index <= 0) {
            return null;
        }

        ret[0] = src.substring(0, index);
        ret[1] = src.substring(index + 1);
        return ret;
    }

    /**
     * 编码特殊字符
     *
     * @param strData
     * @return
     */
    public static String EnCodeString(String strData) {
        if (strData == null) {
            return "";
        }
        return strData.replace("%", "%%").replace(" ", "%20").replace("\n", "%0A");
    }

    /**
     * 解码特殊字符
     *
     * @param strData
     * @return
     */
    public static String DeCodeString(String strData) {
        if (strData == null) {
            return "";
        }
        if (strData.indexOf("%") != -1) {
            for (int ndx = 0; ndx < strData.length(); ndx++) {
                char ch = strData.charAt(ndx);
                if (ch == '%') {
                    if (strData.charAt(ndx + 1) == '%') {
                        strData = strData.substring(0, ndx) + strData.substring(ndx + 1);
                    } else {
                        char ch1 = strData.charAt(ndx + 1);
                        char ch2 = strData.charAt(ndx + 2);
                        ch1 = ch1 >= 'A' ? (char) ((ch1 & 0xdf) - 'A' + 10) : (char) (ch1 - '0');
                        ch2 = ch2 >= 'A' ? (char) ((ch2 & 0xdf) - 'A' + 10) : (char) (ch2 - '0');
                        strData = strData.substring(0, ndx) + (char) (ch1 * 16 + ch2) + strData.substring(ndx + 3);
                    }
                }
            }
        }
        return strData;
    }

    /**
     * 编码xml特殊字符
     *
     * @param strData
     * @return
     */
    public static String EncodeXmlString(String strData) {
        if (strData == null) {
            return "";
        }
        return strData.replace("&", "&amp;").replace("<", "&lt;").replace(">", "&gt;").replace("\'", "&apos;")
                .replace("\"", "&quot;");
    }

    /**
     * 解码xml特殊字符
     *
     * @param strData
     * @return
     */
    public static String DecodeXmlString(String strData) {
        if (strData == null) {
            return "";
        }
        return strData.replace("&lt;", "<").replace("&gt;", ">").replace("&apos;", "\'").replace("&quot;", "\"")
                .replace("&amp;", "&");
    }
}
